/*
 * bignum.h
 *
 *  Created on: Aug 20, 2011
 *      Author: diegolascasas
 */

#ifndef BIGNUM_H_
#define BIGNUM_H_
#define MAXSTRING 1000

/*Bibliotecas*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "error.h"

typedef struct alg{
  int v;
  struct alg* prox;
  struct alg* ant;
} alg; /* algarismo /**/


typedef struct bignum{ 	
  struct alg* inicio;		/* IMPORTANTE: O valor de v no inicio eh 
				 * indicativo da valencia do bignum. 1=negativo */
  struct alg* ultima_casa; 	/* Aponta para o fim da lista */
  double tamanho; 		/* Numero de casas decimais */

} bignum;
void insere(bignum*,int);
void criar(bignum**,char*);
void destruir(bignum*);
void imprimir(bignum*);

int maior(bignum*,bignum*);
void troca(bignum**,bignum**);
void removeesquerda(bignum*);
void limpacasas(bignum*);

void somar(bignum**,bignum*,bignum*);
void subtrair(bignum**,bignum*,bignum*); 


/* Metodos restantes (fazer nessa ordem):
 *
 * Somar()
 * Subtrair()
 * Multiplicar()
 * Dividir()
 *
 */



#endif /* BIGNUM_H_ */
